/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package logica;

import java.util.List;
import util.datatypes.DTCliente;
import util.datatypes.DTEntrada;
import util.datatypes.DTFuncion;
import util.datatypes.DTPelicula;
import util.datatypes.DTReserva;
import util.datatypes.DTTiposEntrada;
import util.datatypes.DTVenta;
import util.exceptions.NoExisteClienteException;
import util.exceptions.NoExistePeliculaException;
import util.exceptions.NoExisteReservaException;
import util.exceptions.NoExisteVentaException;

/**
 *
 * @author bruno
 */
public interface IBoleteria {
    
    void CargarDatosBoleteria();

    DTCliente buscarCliente(int ciCliente) throws NoExisteClienteException;
    
    int cancelarReservaCliente (DTReserva r, int ciCliente) throws NoExisteClienteException, NoExisteReservaException;
    
    int modificarReservaCliente(DTReserva r, int ciCliente) throws NoExisteReservaException;
    
    boolean chequearReservaEnHora(DTReserva r);
    
    int crearVenta(DTVenta v);
    
    int crearEntrada(List<DTEntrada> entradas, int idVenta) throws NoExisteVentaException;
    
    DTPelicula getPelicula (int id);
    
    DTPelicula getFuncionPelicula (DTFuncion f);
    
    DTFuncion getFuncionById(int idFuncion, int idPelicula) throws NoExistePeliculaException;
    
    boolean chequearFuncionesSolapadas(DTFuncion funcion, int ciCliente) throws NoExisteClienteException;
    
    boolean getChequearHoraFuncion(DTFuncion funcion);
    
    List<DTReserva> listarReservas(int ciCliente) throws NoExisteClienteException;
    
    List<DTPelicula> listarPeliculas();
    
    List<DTFuncion> listarFunciones(int idPelicula) throws NoExistePeliculaException;
    
    Double obtenerHoraDouble(String horaString);
    
    String obtenerHoraString(Double horaDouble);
    
    DTTiposEntrada getTipoMenor ();
    
    DTTiposEntrada getTipoMayor ();
    
    DTTiposEntrada getTipoComun ();
    
    boolean  typeOfTipoMenor(DTTiposEntrada entrada);
    
    boolean  typeOfTipoMayor(DTTiposEntrada entrada);
    
    boolean  typeOfTipoComun(DTTiposEntrada entrada);
    
    int contarEntradas(DTFuncion f);
}
